//
//  ViewController.swift
//  微博表情名称转表情图片
//
//  Created by iOS on 16/9/29.
//  Copyright © 2016年 iOS. All rights reserved.
//

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var textView: UITextView!
    /*
     1.找到表情名称 *
     2.根据名称找到模型 *
     3.将模型的图片转成属性文本 *
     4.将表情名称位置替换成带图片的属性文本
     */
    override func viewDidLoad() {
        super.viewDidLoad()
        let string =  "我[爱你],[笑哈哈], [嘻嘻]!!!fdsfsdffsdfds!"// -> 表情图片
//        let model = HMEmoticonModel.emoticonModel(withEmoticonName: "[嘻嘻]")
//        print("model: \(model)")
        
        let result = HMEmoticonManager.emoticonAttributeText(withString: string)
        textView.attributedText = result
    }
    
//    /// 将新浪带表情名称的普通文本替换成带表情图片的属性文本
//    func emoticonAttributeText(withString string: String) -> NSAttributedString {
//        // 1.找到表情名称, 正则表达式
//        //
//        let pattern = "\\[.*?\\]"
//        // . 可以匹配换行 dotMatchesLineSeparators
//        // throws: 会抛异常,出错了不会立马停止,告诉我们有错误,如果对错误进行的处理程序就不会挂掉,不处理就挂掉了
//        // try!: 不处理异常,出错就挂了
//        let regular = try! NSRegularExpression(pattern: pattern, options: .dotMatchesLineSeparators)
//        
//        // [NSTextCheckingResult]
//        let results = regular.matches(in: string, options: [], range: NSRange(location: 0, length: string.characters.count))
//        
//        // 将普通文本转成属性文本,方便后面替换
//        let sinaAttributeText = NSMutableAttributedString(string: string)
//        
//        // 遍历每个结果,获取里面的内容
//        for result in results.reversed() {
////            NSTextCheckingResult
//            print("查找到的范围: \(result.range.location), \(result.range.length)")
//            // 截取需要的字符串
//            let emoticonName = (string as NSString).substring(with: result.range)
////            print("表情名称: \(emoticonName)")
//            
//            // 2.根据名称找到模型 *
//            if let emoticon = HMEmoticonModel.emoticonModel(withEmoticonName:
//                emoticonName) {
//                print("表情模型: \(emoticon)")
//                // 3.将模型的图片转成属性文本 *
//                let arrtibureText = emoticon.toAttributedText(font: UIFont.systemFont(ofSize: 15))
//                
//                // 4.将表情名称位置替换成带图片的属性文本
//                sinaAttributeText.replaceCharacters(in: result.range, with: arrtibureText)
//            }
//        }
//        
//        return sinaAttributeText
//    }
    
//    /// 根据名称找到模型
//    func emoticonModel(withEmoticonName name: String) -> HMEmoticonModel? {
//        // 遍历所有的表情包
//        for package in HMEmoticonManager.shared.packages {
//            // 遍历包里面的所有表情,查找名称一样的表情
//            for emoticon in package.emoticons {
//                if emoticon.chs == name {
//                    // 找到模型了
//                    return emoticon
//                }
//            }
//        }
//        
//        return nil
//    }
}

